From bb4b42c9cf8d6319739c6ac572896edc47cdba86 Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Thu, 20 Aug 2009 08:26:51 +0100 Subject: [PATCH] x86: teardown_msi_irq is not needed. teardown_msi_irq logic is covered in destroy_irq, so remove it to avoid freeing msi resource twice. Signed-off-by: Xiantao Zhang --- xen/arch/x86/irq.c | 3 --- xen/arch/x86/msi.c | 38 -------------------------------------- 2 files changed, 41 deletions(-) diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c index 3683054469..c1105802e3 100644 --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -1383,9 +1383,6 @@ int unmap_domain_pirq(struct domain *d, int pirq) BUG_ON(irq != domain_pirq_to_irq(d, pirq)); - if ( msi_desc ) - teardown_msi_irq(irq); - if ( !forced_unbind ) { d->arch.pirq_irq[pirq] = 0; diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c index faffa485d1..5125ba1cbe 100644 --- a/xen/arch/x86/msi.c +++ b/xen/arch/x86/msi.c @@ -215,22 +215,6 @@ static int set_irq_msi(struct msi_desc *entry) return 0; } -static int unset_irq_msi(int irq) -{ - ASSERT(spin_is_locked(&irq_desc[irq].lock)); - - if ( irq >= nr_irqs ) - { - dprintk(XENLOG_ERR, "Trying to uninstall msi data for irq %d\n", - irq); - return -EINVAL; - } - - irq_desc[irq].msi_desc = NULL; - - return 0; -} - static void write_msi_msg(struct msi_desc *entry, struct msi_msg *msg) { if ( iommu_enabled ) @@ -457,11 +441,6 @@ int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int irq) return 0; } -void teardown_msi_irq(int irq) -{ - unset_irq_msi(irq); -} - int msi_free_irq(struct msi_desc *entry) { if ( entry->msi_attrib.type == PCI_CAP_ID_MSIX ) @@ -780,27 +759,10 @@ void pci_disable_msi(struct msi_desc *msi_desc) static void msi_free_irqs(struct pci_dev* dev) { struct msi_desc *entry, *tmp; - struct irq_desc *desc; - unsigned long flags, irq; list_for_each_entry_safe( entry, tmp, &dev->msi_list, list ) { - irq = entry->irq; - desc = &irq_desc[irq]; pci_disable_msi(entry); - - spin_lock_irqsave(&desc->lock, flags); - - teardown_msi_irq(irq); - - if ( desc->handler == &pci_msi_type ) - { - /* MSI is not shared, so should be released already */ - BUG_ON(desc->status & IRQ_GUEST); - desc->handler = &no_irq_type; - } - - spin_unlock_irqrestore(&desc->lock, flags); msi_free_irq(entry); } } -- 2.30.2